<?php
/**
 * This is the template for generating a CRUD controller class file.
 */

use yii\db\ActiveRecordInterface;
use yii\helpers\StringHelper;


/* @var $this yii\web\View */
/* @var $generator yii\gii\generators\crud\Generator */

$controllerClass = StringHelper::basename($generator->controllerClass);
$modelClass = StringHelper::basename($generator->modelClass);
$searchModelClass = StringHelper::basename($generator->searchModelClass);
if ($modelClass === $searchModelClass) {
    $searchModelAlias = $searchModelClass . 'Search';
}

/* @var $class ActiveRecordInterface */
$class = $generator->modelClass;
$pks = $class::primaryKey();
$urlParams = $generator->generateUrlParams();
$actionParams = $generator->generateActionParams();
$actionParamComments = $generator->generateActionParamComments();

echo "<?php\n";
?>

namespace <?= StringHelper::dirname(ltrim($generator->controllerClass, '\\')) ?>;

use Yii;
use <?= ltrim($generator->modelClass, '\\') ?>;
use <?= ltrim($generator->searchModelClass, '\\') . (isset($searchModelAlias) ? " as $searchModelAlias" : "") ?>;
use yii\web\NotFoundHttpException;
use yii\helpers\ArrayHelper;

/**
* <?= $controllerClass ?> implements the CRUD actions for <?= $modelClass ?> model.
*/
class <?= $controllerClass ?> extends <?= '\yak\layui\controllers\BaseController' . "\n" ?>
{
	/**
	* Lists all <?= $modelClass ?> models.
	* @return mixed
	*/
	public function actionIndex()
	{
		$searchModel = new <?= $searchModelClass ?>();
		$dataProvider = $searchModel->search(Yii::$app->request->queryParams);

		return $this->render('index', [
			'searchModel' => $searchModel,
			'dataProvider' => $dataProvider,
		]);
	}

	/**
	* Displays a single <?= $modelClass ?> model.
	* <?= implode("\n     * ", $actionParamComments) . "\n" ?>
	* @return mixed
	* @throws NotFoundHttpException if the model cannot be found
	*/
	public function actionView(<?= $actionParams ?>)
	{
		return $this->renderPartial('_view', [
			'model' => $this->findModel(<?= $actionParams ?>),
		]);
	}

	/**
	* Creates a new <?= $modelClass ?> model.
	* If creation is successful, the browser will be redirected to the 'view' page.
	* @return mixed
	*/
	public function actionCreate()
	{
		$this->layout = 'blank';
		$model = new <?= $modelClass ?>();
		
		return $this->render('_form', [
			'model' => $model, 
			'ajaxOptions' => [
                'modelClass' => $this->ajaxHeaderClass($model),
            ]
		]);
	}

	/**
	* Updates an existing <?= $modelClass ?> model.
	* If update is successful, the browser will be redirected to the 'view' page.
	* <?= implode("\n     * ", $actionParamComments) . "\n" ?>
	* @return mixed
	* @throws NotFoundHttpException if the model cannot be found
	*/
	public function actionUpdate(<?= $actionParams ?>)
	{
		$this->layout = 'blank';
		$model = $this->findModel(<?= $actionParams ?>);
	
		return $this->render('_form', [
			'model' => $model,
			'ajaxOptions' => [
                'modelClass' => $this->ajaxHeaderClass($model),
                'condition' => ['id' => <?= $actionParams ?>]
            ]
		]);
	}

	/**
	* Deletes an existing <?= $modelClass ?> model.
	* If deletion is successful, the browser will be redirected to the 'index' page.
	* <?= implode("\n     * ", $actionParamComments) . "\n" ?>
	* @return mixed
	* @throws NotFoundHttpException if the model cannot be found
	*/
	public function actionDelete(<?= $actionParams ?>)
	{
		$this->findModel(<?= $actionParams ?>)->delete();

		return $this->ajaxSuccess();
	}

	/**
	* Deletes an existing <?= $modelClass ?> model.
	* If deletion is successful, the browser will be redirected to the 'index' page.
	* <?= implode("\n     * ", $actionParamComments) . "\n" ?>
	* @return mixed
	* @throws NotFoundHttpException if the model cannot be found
	*/
	public function actionBatchDelete()
	{
		$data = Yii::$app->request->post('Data', []);
        $ids = ArrayHelper::getValue($data, 'ids', []);
		<?= $modelClass ?>::deleteAll(['id' => $ids]);

		return $this->ajaxSuccess();
	}
	
	/**
     * Output Excel.
     */
    public function actionOutput()
    {
    }

	/**
	* Finds the <?= $modelClass ?> model based on its primary key value.
	* If the model is not found, a 404 HTTP exception will be thrown.
	* <?= implode("\n     * ", $actionParamComments) . "\n" ?>
	* @return <?= $modelClass ?> the loaded model
	* @throws NotFoundHttpException if the model cannot be found
	*/
	protected function findModel(<?= $actionParams ?>)
	{
		<?php
		if (count($pks) === 1) {
			$condition = '$id';
		} else {
			$condition = [];
			foreach ($pks as $pk) {
				$condition[] = "'$pk' => \$$pk";
			}
			$condition = '[' . implode(', ', $condition) . ']';
		}
		?>
		if (($model = <?= $modelClass ?>::findOne(<?= $condition ?>)) !== null) {
			return $model;
		}

		throw new NotFoundHttpException(<?= $generator->generateString('The requested page does not exist.') ?>);
	}
}
